package s02;

/**
 * @ClassName Test
 * @Description 实际开发过程中，父类类型作为方法形式参数，传递子类对象给方法，进行方法的调用，更能体现出多态的拓展性与便利
 * @Author Li
 * @Date 2022/8/2 10:27
 * @ModifyDate 2022/8/2 10:27
 * @Version 1.0
 */
public class Test {
    public static void main(String[] args) {
        // 创建对象
        Cat c = new Cat();
        Dog d = new Dog();

        // 调用showCatEat
        showCatEat(c);
        // 调用showDogEat
        showDogEat(d);

        /*
         以上两个方法，均可以被showAnimalEat(Animal a)方法所代替
         而执行效果一致
        */
        showAnimalEat(c);
        showAnimalEat(d);
    }

    public static void showCatEat(Cat c) {
        c.eat();
    }

    public static void showDogEat(Dog d) {
        d.eat();
    }

    public static void showAnimalEat(Animal a) {
        a.eat();
    }
}
